# {{ ansible_managed }}

uid = {{ swift_system_user_name }}
gid = {{ swift_system_group_name }}
pid file = /var/run/rsyncd.pid
reverse lookup = {{ swift_rsync_reverse_lookup | bool }}
address = {{ swift_replication_address }}

[account]
max connections = {{ swift_account_max_rsync_connections }}
path = {{ swift_vars.mount_point | default(swift.mount_point) }}
read only = false
lock file = /var/lock/account.lock

[container]
max connections = {{ swift_container_max_rsync_connections }}
path = {{ swift_vars.mount_point | default(swift.mount_point) }}
read only = false
lock file = /var/lock/container.lock

{% if swift_rsync_module_per_drive %}
{### Set up per drive rsync modules #}
{### Lets get the default groups for drives and find the default storage_policy #}
{%   set def_groups = [ 'account', 'container' ] %}
{%   for policy in swift.storage_policies %}
{%     if policy.policy.default is defined and policy.policy.default == True %}
{%       set _update = def_groups.append(policy.policy.name) %}
{%     endif %}
{%   endfor %}
{### swift_vars needs to exist for swift_vars[setting] checks to work #}
{%   if swift_vars is not defined %}
{%     set swift_vars = {} %}
{%   endif %}
{%   set drives = swift_vars.drives | default(swift.drives | default([])) %}
{### Loop through the drives to determine if they are in the object group #}
{%   for drive in drives %}
{%   set devAdded = False %}
{### Check if groups is defined per host or drive #}
{%     set groups = drives.groups | default(swift_vars.groups | default(swift.groups | default(def_groups))) %}
{%     for group in groups %}
{%       if group not in ['account', 'container'] %}
{### We only want to add a device once so check if it was added already #}
{%         if not devAdded | bool %}
[object_{{ drive.name }}]
max connections = {{ swift_object_max_rsync_connections }}
path = {{ swift_vars.mount_point | default(swift.mount_point) }}
read only = false
lock file = /var/lock/object_{{ drive.name }}.lock

{%         endif %}
{%         set devAdded = True %}
{%       endif %}
{%     endfor %}
{%   endfor %}
{% else %}
[object]
max connections = {{ swift_object_max_rsync_connections }}
path = {{ swift_vars.mount_point | default(swift.mount_point) }}
read only = false
lock file = /var/lock/object.lock

{% endif %}
&include /etc/rsync.d
